package cn.edu.wfit.modules.learn.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import cn.edu.wfit.common.core.annotation.Excel;
import cn.edu.wfit.common.core.web.domain.BaseEntity;

/**
 * 项目成员对象 wfit_project_member
 * 
 * @author ruoyi
 * @date 2025-07-25
 */
public class WfitProjectMember extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目成员记录的唯一标识 */
    private Long id;

    /** 项目ID，关联到具体的项目 */
    @Excel(name = "项目ID，关联到具体的项目")
    private Long projectId;


    /** 成员姓名，标识项目成员 */
    @Excel(name = "成员姓名，标识项目成员")
    private String memberName;

    /** 成员手机号，标识项目成员 */
    @Excel(name = "成员手机号，标识项目成员")
    private String memberLink;

    /** 成员学号，标识项目成员 */
    @Excel(name = "成员学号，标识项目成员")
    private String memberId;

    /** 成员职责，描述成员在项目中的具体任务 */
    @Excel(name = "成员职责，描述成员在项目中的具体任务")
    private String memberRole;

    /** 成员描述，可能包括成员的背景、能力等 */
    @Excel(name = "成员描述，可能包括成员的背景、能力等")
    private String memberDescription;

    /** 申请状态（0: 不通过, 1: 通过） */
    @Excel(name = "申请状态", readConverterExp = "0=:,不=通过,,1=:,通=过")
    private String applicationStatus;

    /** 成员加入项目的日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成员加入项目的日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date joinDate;

    /** 成员离开项目的日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成员离开项目的日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date leaveDate;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setProjectId(Long projectId) 
    {
        this.projectId = projectId;
    }

    public Long getProjectId() 
    {
        return projectId;
    }
    public void setMemberId(String memberId) 
    {
        this.memberId = memberId;
    }

    public String getMemberId() 
    {
        return memberId;
    }
    public void setMemberRole(String memberRole) 
    {
        this.memberRole = memberRole;
    }

    public String getMemberRole() 
    {
        return memberRole;
    }
    public void setMemberDescription(String memberDescription) 
    {
        this.memberDescription = memberDescription;
    }

    public String getMemberDescription() 
    {
        return memberDescription;
    }
    public void setApplicationStatus(String applicationStatus) 
    {
        this.applicationStatus = applicationStatus;
    }

    public String getApplicationStatus() 
    {
        return applicationStatus;
    }
    public void setJoinDate(Date joinDate) 
    {
        this.joinDate = joinDate;
    }

    public Date getJoinDate() 
    {
        return joinDate;
    }
    public void setLeaveDate(Date leaveDate) 
    {
        this.leaveDate = leaveDate;
    }

    public Date getLeaveDate() 
    {
        return leaveDate;
    }
    public void setMemberName(String memberName)
    {
        this.memberName = memberName;
    }

    public String getMemberName()
    {
        return memberName;
    }

    public void setMemberLink(String memberLink)
    {
        this.memberLink = memberLink;
    }

    public String getMemberLink()
    {
        return memberLink;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectId", getProjectId())
            .append("memberId", getMemberId())
            .append("memberRole", getMemberRole())
            .append("memberDescription", getMemberDescription())
            .append("applicationStatus", getApplicationStatus())
            .append("joinDate", getJoinDate())
            .append("leaveDate", getLeaveDate())
            .append("memberName", getMemberName())
            .append("memberLink", getMemberLink())
            .toString();
    }

    public WfitProjectMember(String applicationStatus, Long id, Date joinDate, Date leaveDate, String memberDescription, String memberId, String memberName, String memberRole, Long projectId, String memberLink) {
        this.applicationStatus = applicationStatus;
        this.id = id;
        this.joinDate = joinDate;
        this.leaveDate = leaveDate;
        this.memberDescription = memberDescription;
        this.memberId = memberId;
        this.memberName = memberName;
        this.memberRole = memberRole;
        this.projectId = projectId;
        this.memberLink = memberLink;
    }

    public WfitProjectMember() {
    }
}
